\chapter{Introduction et présentation du projet}
\section{Introduction}
Depuis la fin de la deuxième guerre mondiale l'homme a développé de nouveaux moyens de communication avec l'évolution des technologies. La création des ordinateurs et autres systèmes mobiles ont permis de mettre en place une solution d'échange, non plus physique, comme le courier postal ou bien le journal papier, mais virtuelle (échange de données via un disquette par exemple). L'apparition d'Internet au début des années 90 va accélerer le phenomène d'échange virtuel. En effet plus besoin de support de stokage, l'homme peut stocker des données ailleur que sur son ordinateur et les transmettre sans bouger de chez lui. Cette mode ayant un franc succès, des questions de sécurités et d'intégrités des données vont apparaitre. 

La solution la plus connue de nos jours pour répondre à ces interrogations est la cryptographie\cite{Zimmerman} : cette méthode utilisée depuis l'Antiquité pour coder des messages s'applique aujourd'hui aux données transmises via un réseau notamment en s'aidant de secrets ou de clés. Des logiciels et bibliothèques, comme libmcrypt (librairie intégrée dans le noyau Linux), vont apparaître afin de rendre se mécanisme sécuritaire transparent pour l'utilisateur. 

Internet ne permet pas seulement d'échanger des données, il autorise aussi l'accès à des services à distance, par exemple l'accès à ses comptes bancaires depuis chez soi. Ces services nécessitent un niveau de sécurité encore plus élévé, car la majorité des données sont confidentielles. Des protocoles sont mis en place pour protéger ces services. Kerberos est un des ces protocoles, qui permet, par l'intermediaire de tickets et d'identification d'accéder à des services. D'autres outils beaucoup moins complexes sont aussi mis en place; c'est le cas du port knocking\cite{Rach}. Celui ci permet par l'intermédiaire de paquets envoyé sur différents ports, faisant office de combinaison d'identification, d'accéder aux machines protégées par un pare-feu.\\

C'est un de ces mécanismes qui va devoir être compris et implémenté lors de ce Projet, en l'occurence SPA\cite{Rach} (Single Packet Authorization). Cette méthode est une variante du port-knocking, en ajoutant un notion de cryptage et en envoyant un unique paquet. SPA se positionne avant le firewall. Son but est d'écouter le réseau et de récupérer les paquets demandant une communication avec une ressource, puis d'authoriser ou non l'utilisateur selon la légitimité de celui ci. Pour cela SPA gère directement les règles du pare-feu et peu donc décider qui va avoir accès aux différents services et qui va être refusé.

\newpage 
\section{Présentation du projet}
Le but de ce Projet est donc de dévolopper un client et un serveur possédant le mécanisme SPA (figure \ref{spa}). Le client aura pour objectif de forger un paquet et de le crypter afin de l'envoyer au serveur pour accéder aux ressources. Par ailleur il faudra définir les données à intéger dans le paquet afin de monter la légitimité du client et indiquer les services que celui ci souhaite consulter. Le serveur doit quant à lui, détecter et analyser les paquets qui lui sont destiné, reconnaître les paquets rejoués et intéragir avec le pare-feu. 
Voici maintenant les étapes sinéquanones detaillées du projet :\\

\begin{itemize}
\item Forger un paquet avec le client contenant le payload, l'envoyer et le recevoir avec le serveur, désencapsuler le paquet et récupérer le payload\\
\item Ajouter un module de cryptographie permettant de crypter un paquet chez le client et de le décrypter côté serveur. Pour cette étape le processus d'échange de clé ne sera pas réalisé. Ce projet ne permet pas d'implémenter ce protocole à cause du temps imparti pour le réaliser. Donc le client et le serveur possède déjà le sercet partagé.\\
\item Ajouter un module de codage afin de supprimer les caractères exotiques possiblement généré par le cryptosystème\footnote{Algorithme de chiffrement}. En contrepartie le serveur doit pouvoir décoder ce nouveau message.\\
\item Mettre en place des mécanismes de sécurité afin d'authentifier le message reçu et de détecter le rejeu et la péremption des paquets.\\
\item Faire intéragir le serveur avec le pare-feu afin d'instaurer les règles, en concordance avec la demande du client. De plus, ces règles ne doivent être actives que durant un temps limité, afin de restreindre au maximum la possibilité d'intrusion d'un attaquant.\\
\end{itemize}

\bigskip 
\bigskip
\begin{figure}[!h]
\includegraphics[scale=0.4]{utils/spa.png} 
\caption{\label{spa}Illustration du mécanisme SPA\cite{Ra}}
\end{figure}
